package ljl.alg.wangzheng_camp.round1.twopointers;

import java.util.Arrays;

/**
 * 给定两个整数数组a和b，
 * 计算具有最小差绝对值的一对数值（每个数组中取一个值），
 * 并返回该对数值的差
 * 示例：
 *
 * 输入：{1, 3, 15, 11, 2}, {23, 127, 235, 19, 8}
 * 输出：3，即数值对(11, 8)
 *
 * 他不提示，我真不知道用双指针，我直接暴力 for 循环了
 *
 * */
public class _16_06_min_dif {
    
    /*
     * 暴力肯定是两个for
     * 但这个题如果用暴力应该就回去等消息了
     *
     * 1 3 5
     * 2 4
     * */
    public int smallestDifference(int[] a, int[] b) {
        long min = Long.MAX_VALUE;
        int p1 = 0, p2 = 0;
        Arrays.sort(a);
        Arrays.sort(b);
        while (p1 < a.length && p2 < b.length) {
            long v1 = a[p1], v2 = b[p2];
            min = Math.min(min, Math.abs(v1 - v2));
            if (v1 <= v2) {
                p1++;
            } else {
                p2++;
            }
        }
        return (int)min;
    }
    
}
